package cn.wolfcode.wolf2w.common.redis.util;


import lombok.Getter;

//枚举类中的属性时不期待被改的，所以枚举中只能有getter
@Getter
//枚举中只能
public enum RedisKeys {
    /***
     枚举的好处：
            1、防止硬编码前缀，在代码中写的前缀到出都是硬编码，如果以后有需求，需要修改，
                那么需要修改多个地方，如果枚举类中定义了枚举，那么只需要修改枚举类，其他地方不需要修改
            2、代码中用的都是变量名，没用具体的前缀，
                在优化的时候，可以将前缀变短，也方便修改，减少key占用的空间，又兼顾代码又兼顾空间
     */
    //游记收藏
    USER_NOTE_FAVOR("user_note_favor",-1L),
    //游记点赞
    USER_NOTE_THUMBSUP("user_note_thumbsup",-1L),

    //点赞
    USER_STRATEGY_THUMBSUP("user_strategy_thumbsup",-1L),

    //收藏
    USERR_STRATEGY_FAVOR("user_strategy_favor",-1L),
    NOTE_STATIS_HASH("note_statis_hash",-1L),
    STRATEGY_STATIS_HASH("strategy_statis_hash",-1L),
    VERIFY_CODE("verify_code:", 60*5);//枚举类需要将对象枚举出来

    private  String prefix;  //key的前缀
    private long time;  //key的过期时间
    private RedisKeys(String prefix, long time) {
        this.prefix = prefix;
        this.time = time;
    }

    //提供一个方法尽心给拼接
    public String join(String... value){//以后可能拼接多个参数
        StringBuffer sb = new StringBuffer();
        sb.append(this.prefix);//拼接前缀
        for(String string:value){
            sb.append(":").append( string);
        }
        return sb.toString();
    }
}

